
 #include <stdlib.h>
 #include <SDL/SDL.h>
 #include "colision.h"
 #include "SDL_ttf.h"
 #include <string.h>
 #include "SDL_mixer.h"
 
 int main(int argc, char *argv[])
 {
   SDL_Surface *screen;
   SDL_Surface *fondo;
   SDL_Surface *protagonistar;
   SDL_Surface *protagonistaa;
   SDL_Surface *tiror;
   SDL_Surface *tiroa;
   SDL_Surface *tiror2;
   SDL_Surface *tiroa2;
   SDL_Surface *tiror3;
   SDL_Surface *tiroa3;
   SDL_Color color;
   SDL_Color color_blanco;
   SDL_Rect destino;
   SDL_Rect rect;
   TTF_Font* fuente;
   TTF_Font* fuente_titulo;
   TTF_Font* fuente_stitulo;
   SDL_Surface* txt_titulo;
   SDL_Surface* icono;
   SDL_Surface* txt_stitulo;
   SDL_Surface* txt_jugar;
   SDL_Surface* txt_salir;
   SDL_Surface* txt_opciones;
   SDL_Surface* txt_creditos;
   int i, j, ybalr, xbalr, ybala, xbala, bala=0, balr=0;
   int ybalr2, xbalr2, ybala2, xbala2, bala2=0, balr2=0;
   int ybalr3, xbalr3, ybala3, xbala3, bala3=0, balr3=0;
   int dead=0;
   int tmenu=0;
   int controlmenu=1, controlmenu2;
   int opcion=0;
   int rondas=0, gr=0, ga=0;
   int xProta = 320, yProta= 400, xProtr = 0, yProtr= 0; 
  int terminado = 0;
  char buffer [255];
  SDL_Event suceso;
  Uint8* teclas;
  color = (SDL_Color) {255,100,100,255};
  color_blanco = (SDL_Color) {255,255,255,255};
    teclas = SDL_GetKeyState(NULL);
  /* Tratamos de inicializar la biblioteca SDL */
  if (SDL_Init(SDL_INIT_VIDEO) < 0) {
    printf("No se pudo inicializar SDL: %s\n", SDL_GetError());
  }
if (TTF_Init() == -1) {
  printf("Fallo al inicializar SDL_TTF");
}
fuente = TTF_OpenFont("fonts/arial.ttf", 14);
if(fuente == NULL) {
  printf("Fallo al abrir la fuente");
}
	

if(SDL_InitSubSystem(SDL_INIT_AUDIO) == -1){
    
}

if(Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024) == -1){

}

TTF_SetFontStyle(fuente, TTF_STYLE_BOLD);
  /* Preparamos las imagenes a mostrar */
  fondo = SDL_LoadBMP("imgs/fondo.bmp");
  protagonistar = SDL_LoadBMP("imgs/protagr.bmp");
  protagonistaa = SDL_LoadBMP("imgs/protaga.bmp");
   /* El protagonista debe tener contorno transparente */
   SDL_SetColorKey(protagonistar, SDL_SRCCOLORKEY, SDL_MapRGB(protagonistar->format, 0, 0, 0));
   SDL_SetColorKey(protagonistaa, SDL_SRCCOLORKEY, SDL_MapRGB(protagonistaa->format, 0, 0, 0));
 Mix_Music * music = Mix_LoadMUS("music/music.mp3");
if(!music){
    printf("Musica no encontrada");
}
   /* Si todo ha ido bien, hacemos algo:
       entrar a modo grafico y cambiar el título de la ventana */
   icono = SDL_LoadBMP("imgs/icon.bmp");
   SDL_WM_SetIcon(icono,NULL);
  screen = SDL_SetVideoMode( 1024, 748, 16, SDL_HWSURFACE );
 if(screen == NULL) {
      printf( "Error al entrar a modo grafico: %s\n", SDL_GetError() );
     SDL_Quit();
      return -1;
   }
   if(Mix_PlayMusic(music, -1)==-1) {
    printf("Mix_PlayMusic: %s\n", Mix_GetError());
}
   /* Titulo de la ventana */
  SDL_WM_SetCaption( "Space Battle by Dark_eye", "Space Battle by Dark_eye" );
  int titulox=-270;
  int stitulox=1024; 
  fuente_titulo = TTF_OpenFont("fonts/LCD.ttf", 40);
       fuente_stitulo = TTF_OpenFont("fonts/LCD.ttf", 30);
       if(fuente == NULL) {
       printf("Fallo al abrir la fuente");
       }
  while(titulox !=372)
  {
           while (SDL_PollEvent(&suceso)) {
          if (suceso.type == SDL_QUIT)    goto a;
          if (suceso.type == SDL_KEYDOWN)
            if (suceso.key.keysym.sym == SDLK_ESCAPE)  goto a;
        }        
         for (i=0; i<5; i++)
        for (j=0; j<5; j++) {
           destino.x=207*i;
          destino.y=211*j;
          SDL_BlitSurface(fondo, NULL, screen, &destino);
       }
      
       txt_titulo = TTF_RenderText_Blended(fuente_titulo, "Space Battle", color_blanco);
       rect = (SDL_Rect) {titulox, 50, 100, 30 };
       SDL_BlitSurface(txt_titulo, NULL, screen, &rect);
         
       txt_stitulo = TTF_RenderText_Blended(fuente_stitulo, "By Dark_eye", color_blanco);
       rect = (SDL_Rect) {stitulox, 100, 100, 30 };
       SDL_BlitSurface(txt_stitulo, NULL, screen, &rect); 
         titulox+=2;
         stitulox-=2;
         SDL_Flip(screen); 
         SDL_Delay(5);   
  }
  titulox=0;
  #include "menu.h"
  

jugar:  while(terminado == 0) {
           for (i=0; i<5; i++)
        for (j=0; j<5; j++) {
           destino.x=207*i;
          destino.y=211*j;
          SDL_BlitSurface(fondo, NULL, screen, &destino);
       }        
       
    #include "texto.h"  
       
        /* Dibujamos el protagonista */
        if (xProta >= 1024) xProta = 1024;
        if (yProta >= 748) yProta = 748;
        if (xProtr >= 1024) xProtr = 1024;
        if (yProtr >= 748) yProtr = 748;
         destino.x=xProta;
        destino.y=yProta;
        SDL_BlitSurface(protagonistaa, NULL, screen, &destino);
        destino.x=xProtr;
        destino.y=yProtr;
        SDL_BlitSurface(protagonistar, NULL, screen, &destino);

       #include "dibujarbalas.h"
                               
        
          SDL_Flip(screen);
        /* Miramos si hay algun suceso pendiente,
           entre ellos, peticion de abandonar el programa
           (pulsar la X de la ventana) o tecla ESC */
        while (SDL_PollEvent(&suceso)) {
          if (suceso.type == SDL_QUIT)    terminado = 1;
          if (suceso.type == SDL_KEYDOWN)
            if (suceso.key.keysym.sym == SDLK_ESCAPE)  terminado = 1;
        }
        if (SDL_BoundingCollide( protagonistaa , xProta , yProta , protagonistar , xProtr , yProtr ) && dead == 0)
        {
                         protagonistar = SDL_LoadBMP("imgs/destroy.bmp");
                         protagonistaa = SDL_LoadBMP("imgs/destroy.bmp");
                         SDL_SetColorKey(protagonistar, SDL_SRCCOLORKEY, SDL_MapRGB(protagonistar->format, 0, 0, 0));
                         SDL_SetColorKey(protagonistaa, SDL_SRCCOLORKEY, SDL_MapRGB(protagonistaa->format, 0, 0, 0));
                         dead=1;
                         }
                         
                        
        #include "balas.h"           
       
       
                         
       if (dead == 0){
        #include "teclas.h"  
 
         }else{
               if (dead < 30){
                     dead++;
               }else{
                     dead = 0;
                     rondas++;
                     xProta = 320, yProta= 400, xProtr = 0, yProtr= 0; 
                     protagonistar = SDL_LoadBMP("imgs/protagr.bmp");
                     protagonistaa = SDL_LoadBMP("imgs/protaga.bmp");
                        SDL_SetColorKey(protagonistar, SDL_SRCCOLORKEY, SDL_MapRGB(protagonistar->format, 0, 0, 0));
                        SDL_SetColorKey(protagonistaa, SDL_SRCCOLORKEY, SDL_MapRGB(protagonistaa->format, 0, 0, 0));
                     }//if dead <= 600
                     }//if dead == 0
 SDL_Delay(25);
   }//bucle de juego
   /* Finalmente, preparamos para salir */
a: TTF_CloseFont(fuente);
   TTF_Quit();
   SDL_QuitSubSystem(SDL_INIT_AUDIO); 
   Mix_CloseAudio();
   SDL_Quit();
   return 0;
}
